相关疑难解决方法(0)

使用CLR中的'as'关键字进行转换

在编程接口时,我发现我正在进行大量的转换或对象类型转换.

这两种转换方法有区别吗?如果是,是否有成本差异或这对我的计划有何影响?

public interface IMyInterface
{
    void AMethod();
}

public class MyClass : IMyInterface
{
    public void AMethod()
    {
       //Do work
    }

    // Other helper methods....
}

public class Implementation
{
    IMyInterface _MyObj;
    MyClass _myCls1;
    MyClass _myCls2;

    public Implementation()
    {
        _MyObj = new MyClass();

        // What is the difference here:
        _myCls1 = (MyClass)_MyObj;
        _myCls2 = (_MyObj as MyClass);
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,什么是"一般"首选方法?

c# clr casting

377
推荐指数
7
解决办法
7万
查看次数

什么是引擎盖下的演员

可能重复:
C#"as"施放vs经典施法

我想知道当我做类似的事情时,.Net CLR的内幕会发生什么

object myObj = "abc";
string myStr = (string)myObj;

以及第二行与string myStr = myObj.ToString()或如何不同string myStr = myObj as string;

环顾四周我找到了泛型的答案,比如"编译器在那里插入代码",但我并不满意......我正在寻找演员机制的深刻内容......哦,编译器插入代码?给我看看!编译器优化代码?怎么样?什么时候?

请尽可能接近金属!

.net c# clr

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

将Newtonsoft JSON的JToken转换为JArray的最佳方法是什么?

给定JSON中的数组,我试图找到将其转换为JArray的最佳方法。例如-考虑下面的C#代码:

var json = @"{
  ""cities"": [""London"", ""Paris"", ""New York""]
}";
Run Code Online (Sandbox Code Playgroud)

我可以将此JSON读入JObject,方法如下:

var jsonObject = JObject.Parse(json);
Run Code Online (Sandbox Code Playgroud)

现在,我将获得“城市”字段。

var jsonCities = jsonObject["cities"];
Run Code Online (Sandbox Code Playgroud)

在这里,我得到jsonCities作为type JToken。我知道jsonCities是一个数组,所以我想将其转换为JArray。我目前的工作方式是这样的-

var cities = JArray.FromObject(jsonCities);
Run Code Online (Sandbox Code Playgroud)

我试图找出是否有更好的方法将其转换为JArray。其他人如何使用它?

c# json.net

6
推荐指数
2
解决办法
8954
查看次数

这两个C#语句有什么区别?

可能重复:
C#"as"施放vs经典施法

我继承了一些代码,我看到了这个Grid事件处理程序.我不知道这两个陈述之间是否存在差异,我不认为有,但事实是它们在代码中背靠背让我想知道为什么两种方式做同样的事情(假设它们做同样的事情)事情).有人可以解释一下这个区别吗?

            GridDataItem ParentItem = e.Item as GridDataItem;

            GridDataItem NewRow = (GridDataItem)e.Item;
Run Code Online (Sandbox Code Playgroud)

.net c#

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

"(ListView)发件人"与"发件人作为ListView"

可能重复:
C#"as"施放vs经典施法

这两个表达式有什么区别?

  • (ListView)sender
  • sender as ListView

一般来说,我通常使用exp sender as ListView.但在SO中我发现大多数时候用户使用(ListView)sender.

所以,我想知道哪一个更有效率.

要么,

如果它是编码器的选择,使用哪一个[并且两者的工作方式相同]?

c# casting sender

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

标签 统计

c# ×5

.net ×2

casting ×2

clr ×2

json.net ×1

sender ×1