2016-02-21 2 views
0

Im в настоящее время изо всех сил пытается найти решение для упражнения. Как я могу изменить ClassA так, чтобы явная вербальная конверсия во второй части была возможна?C#: explicit typeconversion

class ClassA { 
public int MyValue = 0; 
public string MyText = "Hello World!"; 

//Code to impl 
} 

ClassA myObject = new ClassA(); 
myObject.MyValue = 42; 
myObject.MyText = "Hi!" 
int x = (int)myObject; 
string str = (string)myObject; 
+0

https://msdn.microsoft.com/en-us/library/xhbhezf4.aspx –

+0

@TZHX Этот вопрос охватывает * неявный * type изменение. – poke

+1

Лучший дубликат: http://stackoverflow.com/questions/1407689/how-do-i-provide-custom-cast-support-for-my-class – poke

ответ

-2

Вы определяете явное преобразование.

Трюк здесь - ключевое слово EXPLICIT.

https://msdn.microsoft.com/en-us/library/xhbhezf4.aspx

есть примеры этого.

В основном: класс должен реализовать stateic явного оператора в монетой ...

// Must be defined inside a class called Fahrenheit: 
public static explicit operator Celsius(Fahrenheit fahr) 
{ 
    return new Celsius((5.0f/9.0f) * (fahr.degrees - 32)); 
} 
+0

спасибо, это помогло мне –

-1

Нечто подобное в вашем ClassA определение должно работать:

public static explicit operator int(ClassA a) 
{ 
    return a.MyValue; 
} 

public static explicit operator string(ClassA a) 
{ 
    return a.MyText; 
} 

(я на самом деле могу» t помните, если бы этот случай потребовал бы implicit или explicit, и он не может проверить его на данный момент. Это стоит проверить как для ваших нужд.)

Хотя это немного странно, почему вы хотите сделать это, вместо того, чтобы просто захватывая эти общественные ценности непосредственно:

int x = myObject.MyValue; 
string str = myObject.MyText; 
+0

спасибо, вот что я missed –

+0

@David Не знаете, почему вы отредактировали свой ответ; OP запрашивал * явное * преобразование, поэтому исходное решение было в порядке. – poke

+0

@poke: На самом деле я колебался между ними. Это было длинное время с тех пор, как я это сделал, поэтому я не был уверен, что. – David

Смежные вопросы