小编svi*_*ick的帖子

哪里可以了解VS调试器'魔术名'

如果您曾经使用过Reflector,您可能会注意到C#编译器会生成类型,方法,字段和局部变量,这些变量值得调试器"特殊"显示.例如,以"CS $"开头的局部变量不会显示给用户.匿名方法的闭包类型,自动属性的后备字段等还有其他特殊的命名约定.

我的问题:在哪里可以了解这些命名约定?有谁知道一些文件?

我的目标是使PostSharp 2.0使用相同的约定.

c# compiler-construction debugging

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

结构构造函数:"在将控制权返回给调用者之前,必须完全分配字段."

这是我想写的结构:

  public struct AttackTraits
        {
            public AttackTraits(double probability, int damage, float distance)
            {
                Probability = probability;
                Distance = distance;
                Damage = damage;
            }

            private double probability;
            public double Probability
            {
                get
                {
                    return probability;
                }
                set
                {
                    if (value > 1 || value < 0)
                    {
                        throw new ArgumentOutOfRangeException("Probability values must be in the range [0, 1]");
                    }
                    probability = value;
                }
            }

            public int Damage { get; set; }

            public float Distance { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

这会导致以下编译错误:

在分配所有字段之前,不能使用"this"对象 …

c# constructor struct

106
推荐指数
3
解决办法
6万
查看次数

从JToken获取可能不存在的价值(最佳实践)

使用Json.NET检索C#中甚至可能不存在的JSON值的最佳实践是什么?

现在我正在处理一个JSON提供程序,它返回有时包含某些键/值对的JSON,有时则不然.我一直在使用(也许是错误的)这个方法来获取我的值(例如获得一个double):

if(null != jToken["width"])
    width = double.Parse(jToken["width"].ToString());
else
    width = 100;
Run Code Online (Sandbox Code Playgroud)

现在它工作正常,但是当它们很多时它很麻烦.我最后编写了一个扩展方法,并且只有写完之后我才会想知道是否我是愚蠢的......反正这里是扩展方法(我只包括双和字符串的情况,但实际上我有很多更多):

public static T GetValue<T>(this JToken jToken, string key,
                            T defaultValue = default(T))
{
    T returnValue = defaultValue;

    if (jToken[key] != null)
    {
        object data = null;
        string sData = jToken[key].ToString();

        Type type = typeof(T);

        if (type is double)
            data = double.Parse(sData);
        else if (type is string)
            data = sData;

        if (null == data && type.IsValueType)
            throw new ArgumentException("Cannot parse type \"" …
Run Code Online (Sandbox Code Playgroud)

c# json.net

106
推荐指数
3
解决办法
11万
查看次数

为什么我可以创建一个名为"var"的类?

不是varC#中的关键字?但为什么我这样做:

public class var { }

public class main
{
    public static void main(string[] args)
    {
        var testVar = new var();
    }
}
Run Code Online (Sandbox Code Playgroud)

var是在代码中使用的是var这是在之前声明的类main类.编译器甚至没有抱怨.

当我这样做时:

public class int { }
Run Code Online (Sandbox Code Playgroud)

或这个:

public class true { }
Run Code Online (Sandbox Code Playgroud)

编译器说int或者true是关键字,不能像那样使用.为什么不一样var

c# .net-4.0

103
推荐指数
4
解决办法
3005
查看次数

从通用基类继承,应用约束,并在C#中实现接口

这是一个语法问题.我有一个泛型类,它继承自泛型基类,并将约束应用于其中一个类型参数.我还希望派生类实现一个接口.对于我的生活,我似乎无法弄清楚正确的语法.

这就是我所拥有的:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... }
Run Code Online (Sandbox Code Playgroud)

首先想到的是:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... }
Run Code Online (Sandbox Code Playgroud)

但这是不正确的,因为这导致T2需要实现IBar和IFoo,而不是DerivedFoo来实现IFoo.

我尝试了一些谷歌搜索,使用冒号,分号等,但我已经调整了.我确定答案很简单.

c# generics inheritance interface constraints

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

如何通过JObject枚举?

我正在尝试确定如何访问我的JObject中的数据,而我无法确定如何使用它.

JObject Object = (JObject)Response.Data["my_key"];
Run Code Online (Sandbox Code Playgroud)

我可以将它打印到控制台上做Console.WriteLine(对象),我看到数据,它看起来像:

{
 "my_data" : "more of my string data"
...
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过迭代/枚举,任何人有任何想法?我现在正处于亏损状态.

c# json json.net

101
推荐指数
4
解决办法
10万
查看次数

System.Net.Http:命名空间中缺少?(使用.net 4.5)

TL; DR:我是这种语言的新手,不知道我在做什么

到目前为止,这是我的班级:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Web;
using System.Net;
using System.IO;

public class MyClass
    {
        private const string URL = "https://sub.domain.com/objects.json?api_key=123";
        private const string data = @"{""object"":{""name"":""Title""}}";

        public static void CreateObject()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;
            StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
            requestWriter.Write(data);
            requestWriter.Close();

            try
            {
                // get the response
                WebResponse webResponse = request.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd(); …
Run Code Online (Sandbox Code Playgroud)

c# api rest post

97
推荐指数
6
解决办法
29万
查看次数

Visual Studio 2017安装打破了Visual Studio 2015 ASP.NET核心项目

安装Visual Studio 2017 Professional后,我无法再在Visual Studio 2015 Professional中构建我的ASP.NET Core.我从未在VS2017中打开过这个项目

我明白了

尝试运行项目模型服务器进程(1.0.0-preview3-004056)时发生以下错误.

无法启动该过程.找不到匹配命令dotnet-projectmodel-server的可执行文件

在此输入图像描述

然后我在Visual Studio 2015中创建了一个全新的ASP.NET Core项目,并在加载项目时得到完全相同的消息.

另外,当我想要构建项目时,我得到了

MSB1009:项目文件不存在.

在此输入图像描述

ASP.NET 5项目不会出现同样的问题,因此它仅限于ASP.NET Core


Visual Studio 2017年3月7日更新

如果在下面的答案中添加了一个global.json,则会获得global.jsonC:\Program Files\dotnet\sdk\文件夹中存在的任何.net框架版本的错误消息

错误MSB4019找不到导入的项目"C:\ Program Files\dotnet\sdk\XXX\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.

此外,当关闭Visual Studio并再次重新打开它时,我收到原始错误消息

.net-core asp.net-core visual-studio-2017

94
推荐指数
4
解决办法
2万
查看次数

扩展方法和动态对象

我将把我的问题总结为以下代码片段.

List<int> list = new List<int>() { 5, 56, 2, 4, 63, 2 };
Console.WriteLine(list.First());
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.

现在我尝试了以下内容

dynamic dList = list;
 Console.WriteLine(dList.First());
Run Code Online (Sandbox Code Playgroud)

但是我得到了RuntimeBinderException.为什么会这样?

c# dynamic c#-4.0

93
推荐指数
3
解决办法
2万
查看次数

有没有像python的交互式REPL模式,但对于Java?

有没有像python的交互式REPL模式,但对于Java?因此,我可以,例如,键入InetAddress.getAllByName( localHostName )一个窗口,并立即获得结果,没有所有这些公共静态void nightmare()的事情?

java read-eval-print-loop

92
推荐指数
14
解决办法
2万
查看次数