相关疑难解决方法(0)

为什么这个(null ||!TryParse)条件导致"使用未分配的局部变量"?

以下代码导致使用未分配的局部变量"numberOfGroups":

int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}
Run Code Online (Sandbox Code Playgroud)

但是,这段代码工作正常(但ReSharper说这= 10是多余的):

int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么,还是编译器不喜欢我||

我把它缩小到dynamic导致问题(options在上面的代码中是一个动态变量).问题仍然存在,为什么我不能这样做

此代码无法编译:

internal class Program
{
    #region Static Methods

    private static void Main(string[] args)
    {
        dynamic myString = args[0];

        int myInt;
        if(myString == null || !int.TryParse(myString, out myInt))
        {
            myInt …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction cil dynamic c#-4.0

96
推荐指数
3
解决办法
2628
查看次数

&&运算符重载和C#中的赋值 - 澄清?

下面这个非常有趣的问题, 这是源于这个问题-

我想退后一步 (删除动态环境):

看看这段代码:( 这个的一个变种)

void Main()
{
    int a;
     int b = 100;
    Console.WriteLine(X.M(1, out a));

}

public class X
{
    public  int H=0;

    public static X M(int x, out int y)
    {
        Console.WriteLine("x = "+x);
        y = x;
        return new X(x);
    }

    public X(){}

    public X(int h)
    {
        H=h;
    }

    public static bool operator false(X x)     {Console.WriteLine("in false operator for "+ x.H); return true; }
    public static bool operator true(X …
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×2

c#-4.0 ×1

cil ×1

compiler-construction ×1

dynamic ×1