小编dii*_*___的帖子

用Equals()覆盖相等运算符

我已经调试了一个问题已经有一段时间了,并且意识到它来自于==我应该使用的对象的使用object.Equals()

为了防止这样的问题,希望==操作员调用Object.Equals()我已经覆盖的内容.

那可能吗?以下代码遇到堆栈溢出异常...

public static bool operator ==(Portfolio a, Portfolio b)
{
    return a != null && a.Equals(b);
}

public static bool operator !=(Portfolio a, Portfolio b)
{
    return a != null && !a.Equals(b);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# overriding equality operators

1
推荐指数
1
解决办法
62
查看次数

为静态类定义全局别名

我有一个静态的ExceptionHelper,看起来像这样:

public static class ExceptionHelper
{
    public static async void ShowDialog(string message)
    {
        // Show message
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我想调用这个方法时,我都会这样做:

ExceptionHelper.ShowDialog("This is a message.");
Run Code Online (Sandbox Code Playgroud)

我现在考虑定义一个别名,这样ExceptionHelper每次我想使用它时就不必写整个单词了。

我知道我可以通过以下方式实现它using

using Ex = MyNamespaces.ExceptionHelper;
Run Code Online (Sandbox Code Playgroud)

但随后我必须在我想要使用该方法的每个文件中定义它。有没有一种方法可以在不更改类名的情况下全局定义别名?或者我可以在类声明之上设置任何属性吗?

c# static alias

1
推荐指数
1
解决办法
6615
查看次数

为什么我可以将空条件运算符应用于硬编码字符串?

我有一个bool像这样的变量:

bool myBool = true;
Run Code Online (Sandbox Code Playgroud)

如果我写,if (myBool == null)我得到以下警告:

表达式的结果总是"假",因为类型'bool'的值永远不等于'bool?'类型的'null'.

这对我来说很清楚,因为检查一个不可为空的变量是否为空是没有意义的.Visual Studio注意到并标记为警告.

现在我有一个string,默认情况下可以为空,据我所知.

为什么我可以在string没有Visual Studio注意到硬编码的情况下将空条件运算符应用于硬编码?我在考虑这样的事情:

"This is a string"?.AnyStringMethod();
Run Code Online (Sandbox Code Playgroud)

Visual Studio不应该注意到它string根本不是null吗?

c# string visual-studio-2015 null-conditional-operator

1
推荐指数
2
解决办法
316
查看次数

Console.WriteLine()与Console.WriteLine(string.Empty)

在我们的一个应用程序中,我遇到过这样的一些行:

Console.WriteLine(string.Empty);
Run Code Online (Sandbox Code Playgroud)

如果我写的话,我检查了它是否有任何区别:

Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)

但输出是相同的(如预期的那样).

这个例子中的"最佳实践"是什么?是否有必要传递空string而不是传递任何参数的情况?

c#

1
推荐指数
1
解决办法
2205
查看次数

在roslyn中解析#if指令代码

我试图使用Roslyn从我的CS文件中提取代码的一部分,我遇到了以下问题.

我的C#文件代码:

    class ConditionalCompilationCode
    {
#if Condition2
            int test2=0; 
#endif
#if Condition1
            int test1=0; 
#endif

        public static void Main1(string[] args)
        {
            int test = 0;
#if Condition1
            test = 1;
#else
            test =2;
#endif

#if Condition2
            test =3;
#else
            test = 4;
#endif

        }
#if Condition2
            private void testmethod1()
        {
            test2 = 1;
        }
#endif
#if !Condition2
        private void testmethod2()
        {
            test1 = 1;
        }
#endif
#if Condition1
        private void testmethod3()
        {
            test1 = 1;
        }
#endif
#if !Condition1
            private …
Run Code Online (Sandbox Code Playgroud)

c# roslyn roslyn-code-analysis

1
推荐指数
1
解决办法
349
查看次数

获取所有孩子,Unity3d中的孩子

到目前为止,我已经尝试过这个来获取对象的所有子项,但它只带来两个子对象.不是孩子的全部孩子.我如何获得所有并循环获取特定的名称对象

Transform[] objChild = gameObject.transform.GetComponentsInChildren<Transform>();
for (var i = 0; i < objChild.Length; i++)
{
    objWheel.Add(objChild[i].gameObject.transform.GetChild(i).gameObject);
    objWheelAnimation.Add(objChild[i].gameObject.transform.GetChild(i).GetComponent<Animation>());
    if (objChild[i].gameObject.name.Contains("Wheel Rotation"))
    {               
    }
}
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

0
推荐指数
2
解决办法
8676
查看次数

主方法仅在它为空时编译

我创建了以下程序:

namespace MyNamespace
{
    public enum MyEnum { Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sep = 9, Okt = 10, Nov = 11, Dec = 12 }

    class Program
    {
        static void Main(string[] args)
        {
            private static string sourcePath = @"T:\his\is\my\source";
            private static string destinationPath = @"T:\his\is\my\destination";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这就是我所拥有的一切.问题是它不会像这样编译.我得到以下异常:

预期的

它仅在我将Main方法体留空时才有效.当我使用Ctrl+ KD来格式化代码时,它的格式如下:

namespace MyNamespace …
Run Code Online (Sandbox Code Playgroud)

c# console-application

-5
推荐指数
1
解决办法
259
查看次数