相关疑难解决方法(0)

直接投射vs'as'运算符?

请考虑以下代码:

void Handler(object o, EventArgs e)
{
   // I swear o is a string
   string s = (string)o; // 1
   //-OR-
   string s = o as string; // 2
   // -OR-
   string s = o.ToString(); // 3
}
Run Code Online (Sandbox Code Playgroud)

三种类型的铸造之间有什么区别(好吧,第三种不是铸造,但是你得到了意图).应该首选哪一个?

c# casting

679
推荐指数
10
解决办法
14万
查看次数

使用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#与铸造的区别和?

可能重复:
c#中的以下强制转换之间有什么区别?

在C#中,铸造对象或使用as关键字有区别吗?希望这段代码能说明我的意思......

String text = "Hello hello";
Object obj = text; 

String originalCast = ((String)obj).ToUpper();
String originalAs = (obj as String).ToUpper();
Run Code Online (Sandbox Code Playgroud)

谢谢

:)

c# casting

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

在转换变量时语法的最佳实践是什么?

哪个(如果有的话)更正确?为什么?

string someVariable = (string) someOtherVariable;
string someVariable = someOtherVariable.ToString();
string someVariable = someOtherVariable as string;
Run Code Online (Sandbox Code Playgroud)

我已经使用了所有三个,但我没有任何偏好或理解为什么一个比另一个好.

c#

7
推荐指数
3
解决办法
2601
查看次数

7
推荐指数
2
解决办法
1914
查看次数

为什么要在使用"as"时转换引用类型?

可能重复:
转换:(NewType)与Object作为NewType

在C#中,为什么要在使用"as"时转换引用类型?

铸造可以产生异常,而"as"将null在铸造失败时进行评估.

在所有情况下,"as"是否更容易使用引用类型?

例如:

MyObject as DataGridView
Run Code Online (Sandbox Code Playgroud)

而不是,

(DataGridView)MyObject
Run Code Online (Sandbox Code Playgroud)

c# casting

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

何时使用()与'as'来改变类型?

可能重复:
转换:( NewType)与Object对象作为NewType
Casting vs使用CLR中的'as'关键字

//var gridView = (gridViewRow.NamingContainer as GridView); <-- works too
var gridView = (GridView)gridViewRow.NamingContainer;
Run Code Online (Sandbox Code Playgroud)

我对此的不完全理解是使用as关键字可以null在使用强制转换()时抛出异常.我的目标是能够问自己"我应该选择哪种方式?" 并知道如何回答它.

c# type-conversion

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

转换 - 在C#中"(myObject)something"和"some as AsObject"之间的区别是什么?

我已经遇到过这种情况并且感到困惑.

Cat c = new Cat("Fluffy");
return (Animal)c;

Cat c = new Cat("Fluffy");
return c as Animal;
Run Code Online (Sandbox Code Playgroud)

这两种语法都存在的原因是什么?

c#

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

as和cast之间的比较

可能重复:
直接投射vs'as'运算符?

任何人都可以对as和cast进行比较?

.net c#

3
推荐指数
1
解决办法
196
查看次数

C#中的不同转换类型

可能的重复:
转换:(NewType)与Object为NewType
为什么C#"as"运算符如此受欢迎?

嘿,

我知道这可能是一个愚蠢的问题,但今天我怀疑这个问题.

这样做有什么区别

String text = (String) variable;
Run Code Online (Sandbox Code Playgroud)

String text = variable as String;
Run Code Online (Sandbox Code Playgroud)

c# casting

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

"对象类型"和"((类型)对象)"之间有什么区别?

可能重复:
直接投射vs'as'运算符?
使用CLR中的'as'关键字进行转换

object myObject = "Hello world.";
var myString = myObject as string;
Run Code Online (Sandbox Code Playgroud)
object myObject = "Hello world.";
var myString = (string)myObject;
Run Code Online (Sandbox Code Playgroud)

我已经看到两种方式都进行了类型转换.有什么不同?

c# types casting object strong-typing

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

标签 统计

c# ×11

casting ×6

.net ×2

clr ×1

object ×1

strong-typing ×1

type-conversion ×1

types ×1