sách gpt4 ăn đã đi

c# - #if DEBUG 与条件 ("DEBUG")

In lại 作者:IT王子 更新时间:2023-10-29 03:27:39 26 4
mua khóa gpt4 giày nike

在大型项目中哪个更好用,为什么:

#nếu GỠ LỖI
public void SetPrivateValue(int value)
{ ... }
#kết thúc nếu

hoặc

[System.Diagnostics.Conditional("DEBUG")]
public void SetPrivateValue(int value)
{ ... }

câu trả lời hay nhất

这真的取决于你要做什么:

  • #nếu GỠ LỖI:此处的代码甚至不会在发布时到达 IL。
  • [Conditional("DEBUG")]:此代码将到达 IL,但是对该方法的调用将被省略,除非在编译调用程序时设置了 DEBUG .

我个人根据情况使用两者:

有条件的(“DEBUG”)示例:我使用它是为了在发布期间不必返回并稍后编辑我的代码,但在调试期间我想确保我没有'不要打错字。当我尝试在我的 INotifyPropertyChanged 内容中使用它时,此函数会检查我是否正确键入了属性名称。

[Conditional("DEBUG")]
[windowStepThrough]
protected void VerifyPropertyName(String propertyName)
{
if (TypeDescriptor.GetProperties(this)[propertyName] == null)
Debug.Fail(String.Format("Invalid property name. Type: {0}, Name: {1}",
GetType(), propertyName));
}

你真的不想使用 #nếu GỠ LỖI 创建一个函数,除非你愿意用相同的 #nếu GỠ LỖI 包装对该函数的每次调用:

#nếu GỠ LỖI
public void DoSomething() { }
#kết thúc nếu

public void Foo()
{
#nếu GỠ LỖI
DoSomething(); //This works, but looks FUGLY
#kết thúc nếu
}

sự tương phản:

[Conditional("DEBUG")]
public void DoSomething() { }

public void Foo()
{
DoSomething(); //Code compiles and is cleaner, DoSomething always
//exists, however this is only called during DEBUG.
}

#if DEBUG 示例:我在尝试为 WCF 通信设置不同的绑定(bind)时使用它。

#nếu GỠ LỖI
public const String ENDPOINT = "Localhost";
#khác
public const String ENDPOINT = "BasicHttpBinding";
#kết thúc nếu

在第一个示例中,所有代码都存在,但除非 DEBUG 打开,否则将被忽略。在第二个示例中,const ENDPOINT 设置为“Localhost”或“BasicHttpBinding”,具体取决于是否设置了 DEBUG。


更新:我正在更新此答案以澄清一个重要且棘手的问题。如果您选择使用 ConditionalAttribute,请记住在编译期间会省略调用,不会在运行时。即:

MyLibrary.dll

[Conditional("DEBUG")]
public void A()
{
Console.WriteLine("A");
B();
}

[Conditional("DEBUG")]
public void B()
{
Console.WriteLine("B");
}

当库针对 Release模式(即没有 DEBUG 符号)编译时,它将永远省略 A() 中对 B() 的调用,即使如果包含对 A() 的调用,因为 DEBUG 是在调用程序集中定义的。

关于c# - #if DEBUG 与条件 ("DEBUG"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788605/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress