Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法在单个语句中指定不同类型的变量。。?_C# - Fatal编程技术网

C# 有没有办法在单个语句中指定不同类型的变量。。?

C# 有没有办法在单个语句中指定不同类型的变量。。?,c#,C#,我在想,有没有办法在一条语句中指定不同类型的变量 string s = ""; int ia = 0; int ib = 5; // is there any short hand technique to assign all // 3 variables in single statement..?: s = ia = ib; 若数据类型相同,则可以使用速记技术。就你而言 int ia = 0, ib = 5; string s = ia = ib; 若数据类型相同,则可以使用

我在想,有没有办法在一条语句中指定不同类型的变量

string s = "";
int ia = 0;
int ib = 5;

// is there any short hand technique to assign all 
// 3 variables in single statement..?:
s =  ia = ib;  

若数据类型相同,则可以使用速记技术。就你而言

int ia = 0, ib = 5;
string s = ia = ib;

若数据类型相同,则可以使用速记技术。就你而言

int ia = 0, ib = 5;
string s = ia = ib;

不可以。但是你可以转换类型。在你的例子中:

int a1 = 5;
String s = "" + a1;

这不是最好的办法。但是最简单的

否。但您可以转换类型。在你的例子中:

int a1 = 5;
String s = "" + a1;
这不是最好的办法。但是最简单的

您可以,但您必须(通过操作员)解释如何操作:

  public class MyClass {
    public static implicit operator MyClass(int value) {
      return new MyClass();
    }
  }

  ...

  int a = 2;
  int b = 3;

  MyClass c = a = b;
在您的情况下,
int
不能隐式转换为
String
,这就是错误的原因。解决方案是显式转换:

您可以,但您必须(通过操作员)解释如何操作:

  public class MyClass {
    public static implicit operator MyClass(int value) {
      return new MyClass();
    }
  }

  ...

  int a = 2;
  int b = 3;

  MyClass c = a = b;
在您的情况下,
int
不能隐式转换为
String
,这就是错误的原因。解决方案是显式转换:

您可以这样做:

string s = "";
int ia = 0;
int ib = 5;
s = (ia = ib).ToString();
我不推荐它,但它会起作用-
ia
将是5,而
s
将是“5”

你真的愿意这样做而不是使用两个语句吗?我尽量避免在一句话中做得太多——简洁和清晰不是一回事。我想大多数人会觉得这更简单:

string s = "";
int ia = 0;
int ib = 5;
ia = ib;
s = ib.ToString();
或者更好:

int ib = 5;
int ia = ib;
string s = ib.ToString();
(我不喜欢用值初始化变量,这些值将被覆盖而不被读取。)

您可以这样做:

string s = "";
int ia = 0;
int ib = 5;
s = (ia = ib).ToString();
我不推荐它,但它会起作用-
ia
将是5,而
s
将是“5”

你真的愿意这样做而不是使用两个语句吗?我尽量避免在一句话中做得太多——简洁和清晰不是一回事。我想大多数人会觉得这更简单:

string s = "";
int ia = 0;
int ib = 5;
ia = ib;
s = ib.ToString();
或者更好:

int ib = 5;
int ia = ib;
string s = ib.ToString();


(我不喜欢用值初始化变量,这些值将被覆盖而不被读取。)

不。不能直接混淆不同的类型。如果有,它看起来会很混乱,可能会违反我所知道的每一个编码标准。请编写可读性好的代码。不管它有多长,我们都有滚动条@PetSerAl,似乎是一个解决方案。你想解决什么问题?考虑代码清晰。不。你不能直接把不同的类型混在一起。如果有,它看起来会很混乱,可能会违反我所知道的每一个编码标准。请编写可读性好的代码。不管它有多长,我们都有滚动条@PetSerAl,似乎是一个解决方案。你想解决什么问题?考虑代码清晰。你自己尝试过了吗?int IA=0,IB=5;这一部分当然有效。关于第二部分,不能将int赋值给string。对不起,我没有注意到这一点。实际的问题是关于分配不同类型的变量。对不起,我不好。我没注意到。你自己试过吗?intia=0,ib=5;这一部分当然有效。关于第二部分,不能将int赋值给string。对不起,我没有注意到这一点。实际的问题是关于分配不同类型的变量。对不起,我不好。我没有注意到。据说调用
ToString()
比无缘无故地引入字符串串接简单。据说调用
ToString()
比无缘无故地引入字符串串接简单。是的,这是一种实现方法s=(ia=ib)。ToString()@约格什克莫罗尼:我不知道如何解释你的评论。。。这和我的答案中的代码是一样的,我认为这在可读性方面通常是个坏主意。是的,这是个坏主意,但我已经提出了一种方法来实现这一点,是的,这是一种方法,在可读性方面可能是坏的,但我们可以做到。是的,这是一种实现这一点的方法s=(ia=ib).ToString()@约格什克莫罗尼:我不知道如何解释你的评论。。。这和我的答案中的代码是一样的,我认为这在可读性方面通常是个坏主意。是的,这是个坏主意,但我已经问了一种方法,是的,这是一种方法,在可读性方面可能是个坏主意,但我们可以做到。