Я могу создать средства доступа на структурах для автоматического преобразования в другие типы данных?

это возможный сделать что-то как следующее:

struct test
{
   this
   {
      get { /*do something*/ }
      set { /*do something*/ }
   }
}

так, чтобы, если кто-то пытался сделать это,

test tt = new test();
string asd = tt; // intercept this and then return something else
10
задан Shog9 1 March 2010 в 03:08
поделиться

3 ответа

Концептуально то, что вы хотите здесь сделать, на самом деле возможно в .NET и C #, но вы строите неправильное дерево в отношении синтаксиса. Похоже, что здесь решением будет оператор неявного преобразования ,

Пример:

struct Foo
{
   public static implicit operator string(Foo value)
   {
      // Return string that represents the given instance.
   }

   public static implicit operator Foo(string value)
   {
      // Return instance of type Foo for given string value.
   }
}

Это позволяет вам назначать и возвращать строки (или любой другой тип) в / из объектов вашего пользовательского типа ( Foo здесь).

var foo = new Foo();
foo = "foobar";
var string = foo; // "foobar"

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

Примечание. Существуют также явные операторы преобразования, но я думаю, что вам больше нужны неявные операторы.

7
ответ дан 4 December 2019 в 01:56
поделиться

Расширяя ответ MikeP , вы хотите что-то вроде:

public static implicit operator Test( string value )
{
    //custom conversion routine
}

или

public static explicit operator Test( string value )
{
    //custom conversion routine
}
0
ответ дан 4 December 2019 в 01:56
поделиться

Вы можете определить неявные и явные операторы преобразования в ваш настраиваемый тип и обратно.

public static implicit operator string(test value)
{
    return "something else";
}
2
ответ дан 4 December 2019 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: