2015-02-04 2 views
0

Я думаю, есть ли способ назначить разные типы переменных в одном утверждении ..?Есть ли способ назначить разные переменные типа в одном выражении ..?

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; 
+1

Нет. Вы не можете смешивать разные типы –

+2

Не напрямую. И если бы это было, это выглядело бы запутанным и, вероятно, нарушало бы каждый стандарт кодирования, который я знаю. Пожалуйста, напишите код, который хорошо читается. Неважно, как долго это происходит, у всех нас есть полосы прокрутки. – nvoigt

+0

's = (ia = ib) .ToString();' – PetSerAl

ответ

3

Вы можете сделать это:

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(); 

(. Я не люблю инициализации переменных со значениями, которые только собираются быть перезаписаны никогда не читают)

+0

да, это способ сделать это s = (ia = ib). ToString(); – yogeshkmrsoni

+0

@yogeshkmrsoni: Я не уверен, как интерпретировать ваш комментарий ... это тот же код, что и в моем ответе, и я предположил, что это вообще плохая идея с точки зрения удобочитаемости. –

+0

Да, это плохая идея, но я попросил способ сделать это, и да, это способ, может быть, плохо с точки зрения удобочитаемости, но мы можем это сделать. – yogeshkmrsoni

-1

Вы можете использовать сокращенную технику, если тип данных такой же. В вашем случае ...

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

Вы сами это пробовали? –

+0

int ia = 0, ib = 5; Эта часть работы работает. Что касается второй части, вы не можете назначить int string. Извините, я не обратил внимания на эту часть. –

+0

Фактический вопрос касается назначения переменных переменных типа –

0

Нет. Но вы можете конвертировать типы. В вашем примере:

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

Это не лучший способ. Но самое простое.

+1

Говорят, что вызов 'ToString()' проще, чем введение конкатенации строк без всякой причины. –

2

Вы можете , но вы должны объяснить (с помощью оператора ), как это сделать:

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 и это причина ошибки. Решение представляет собой явное преобразование:

int a = 2; 
    int b = 3; 

    String c = (a = b).ToString(); // explicit conversion required