小编Jak*_*use的帖子

C# 中的 myArray.GetValue(2) 和 myArray[2] 有什么区别?

使用 myArray.GetValue(2) 和 myArray[2] 有什么区别吗?

例如:

namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = new int[] { 1, 2, 3, 4 };
            Console.WriteLine(numbers.GetValue(3));
            Console.WriteLine(numbers[3]);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

来自Nullable结构的方法.Value的Null条件运算符

我正在尝试学习null条件运算符.从我学到的书中,例如,如果我将string []数组传递给方法,我可以代替使用条件范围,使用空条件运算符来检查传递的string []数组是否为空,因为例如在方法中我会想要使用.Length属性,如果我向它传递null,它将导致运行时错误.

我理解的所有这些,但是当我想使用来自通用Nullable结构的nullable int和.Value属性时,它已经在我身上抛出了编译器错误.

我想问题就是,我不明白这是什么'?' 在后缀变量之后做的是null.我认为它只是跳过它后面的属性或方法,但也许它传递null并且只是隐藏异常.我真的不知道,所以我想更深入地问这个Null条件运算符到底是什么,为什么这个可以为空的int示例导致错误.

代码有错误:

 class Program
{
    static void Main(string[] args)
    {
        string text = null;
        Console.WriteLine("Variable contains: {0}", text?.Length); //All OK

        int? nullableInt = null;
        Console.WriteLine("Variable contains: {0}", nullableInt?.Value); //Compiler error

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:CompilerError消息:

'int'不包含'Value'的定义,并且没有扩展方法'Value'可以找到接受类型'int'的第一个参数(你是否缺少using指令或汇编引用?)

Edit2: 这篇文章是重复的: null条件运算符不能使用可空类型? 但是我无法理解这篇文章中的问题,但我设法得到它,感谢来自@adjan /sf/answers/3122957211/的帖子 ,他解释得很好,但在我的尝试中学习它,我为一个稍后会读到这个的人做了一个更好的解释,也许是为了和我一样处于同一个位置的人.

如果使用'?' 可操作类型的运算符,例如int?.Member(Member - some method,property ...),如果变量为null,则跳过成员,但如果它有例如5的值,则运算符'?' return variable.GetValueOrDefault(),它只返回int值.(返回Nullable的底层类型),这几乎是@adjan所说的.但我将在这里介绍代码,为我解释了一切:

 static void Main(string[] args)
    {
        int? number = null;

        variable?.Member

        // in fact operator '?' is doing folowing:
        if (number.HasValue)
        {
            Console.WriteLine(number.GetValueOrDefault().GetType()); //System.Int32
        } …
Run Code Online (Sandbox Code Playgroud)

c# conditional nullable

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

为什么我可以访问在命名空间之外定义的类?

我想知道为什么我在命名空间范围之外定义它时可以访问类?

我对命名空间不太熟悉,我只是在学习,但我认为命名空间应该将我的所有类都包装到一个"盒子"中,并且它们可以在"盒子"(范围)内部相互访问.

代码示例:

class Point
{
    public int X;
}

namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            Point p = new Point();
            p.X = 50;
            Console.WriteLine(p.X);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

c# namespaces class

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

标签 统计

c# ×3

class ×1

conditional ×1

namespaces ×1

nullable ×1