相关疑难解决方法(0)

什么是NullReferenceException,我该如何解决?

我有一些代码,当它执行时,它抛出一个NullReferenceException,说:

你调用的对象是空的.

这是什么意思,我该怎么做才能解决这个错误?

.net c# vb.net null nullreferenceexception

1876
推荐指数
24
解决办法
127万
查看次数

如何在C#中获取变量的数据类型?

如何找出某个变量所持有的数据类型?(例如int,string,char等)

我现在有这样的事情:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Testing
{
    class Program
    {
        static void Main()
        {
            Person someone = new Person();
            someone.setName(22);
            int n = someone.getName();
            Console.WriteLine(n.typeOf());
        }
    }

    class Person
    {
        public int name;

        public void setName(int name)
        {
            this.name = name;
        }

        public int getName()
        {
            return this.name;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# types

83
推荐指数
4
解决办法
16万
查看次数

Resharper强调使用nameof"使用调用者信息属性传递给参数的显式参数"

我使用nameof函数将属性名称作为字符串,因此:

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));
Run Code Online (Sandbox Code Playgroud)

Resharper通过警告强调了这一点:

使用调用者信息属性传递给参数的显式参数

代码工作,我只是想知道上面的警告是否是我应该担心的事情.

c# c#-6.0 resharper-9.0 nameof

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

Java中的等价名称

C#6.0引入了nameof()运算符,它返回一个字符串,表示放在其中的任何类/函数/方法/局部变量/属性标识符的名称.

如果我有这样的课程:

class MyClass
{
    public SomeOtherClass MyProperty { get; set; }

    public void MyMethod()
    {
        var aLocalVariable = 12;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样使用运算符:

// with class name:
var s = nameof(MyClass); // s == "MyClass"

// with properties:
var s = nameof(MyClass.OneProperty); // s == "OneProperty"

// with methods:
var s = nameof(MyClass.MyMethod); // s == "MyMethod"

// with local variables:
var s = nameof(aLocalVariable); // s == "aLocalVariable".
Run Code Online (Sandbox Code Playgroud)

这很有用,因为在编译时检查了正确的字符串.如果我拼错某些属性/方法/变量的名称,编译器将返回错误.此外,如果我重构,所有字符串都会自动更新.有关实际用例,请参阅此文档.

Java中是否有该运算符的等价物?否则,我怎样才能达到相同的结果(或相似)?

java nameof

24
推荐指数
4
解决办法
6719
查看次数

名称如何工作?

我只是想知道C#6中的nameof如何才能访问非静态属性,就像它是静态的一样.这是一个例子

public class TestClass
{
    public string Name { get; set; }
}

public class Test
{
    public Test()
    {
        string name = nameof(TestClass.Name); // whats so speciall about nameof
        //string name2 = TestClass.Name; this won't compile obviously, 
    }
}
Run Code Online (Sandbox Code Playgroud)

c# c#-6.0

9
推荐指数
2
解决办法
1778
查看次数

Rust 中有 C# 中的 nameof() 类似吗?

在我的程序中,我表示某些对象字段的更改历史记录,如下所示:

struct FieldChange {
    property_name: &'static str,
    // some other fields
}

let history = Vec<FieldChange>::new();
Run Code Online (Sandbox Code Playgroud)

我这样处理:

match field_change.property_name {
    "name" => // do something,
    "age"  => // do something,
    _      => {}
}
Run Code Online (Sandbox Code Playgroud)

为了提高可读性并方便将来的重构,我想写这样的内容:

match field_change.property_name {
    nameof(Person::name) => // do something,
    nameof(Person::age)  => // do something,
    _                    => {}
}
Run Code Online (Sandbox Code Playgroud)

wherenameof生成&str字段的表示,类似于nameofC# 中的

我正在寻找的要点是编译器可以验证字段是否存在(例如,在本例中,是否Person确实有nameage字段)。在 Rust 中是否可以像这样提取字段名称?

reflection rust

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

在编译时获取变量名的标准方法

在C++ 11或更高版本中是否有某种方法可以实现类似的行为:

int some_int;
std::string x=variable_name<some_int>::value; //Theoretical code 
std::cout << x;
Run Code Online (Sandbox Code Playgroud)

结果应该是:

some_int

如果没有,是否有编译器特定的方法来做到这一点?我的目标是MSVS.

c++ compile-time c++11

5
推荐指数
3
解决办法
3288
查看次数