Попытка контролировать назначение объекта в c # - PullRequest
0 голосов
/ 12 октября 2018

То, что я хотел бы сделать, это контролировать назначение двух объектов.Так что если мой класс выглядел следующим образом в случае строки (очень грубо, но справедливо и пример)

public class fixLen
{
    public int len;
    public string str;

    public fixLen(string str, int len)
    {
       this.str = str;
       this.len = len;
    }
}

Тогда в моем основном классе я делаю это;

fixLen str1 as new fixLen("abc", 3);
fixLen str2 as new fixLen("wxyz", 4);

str1 = str2

Когда str2назначен на str1. Я хотел бы иметь возможность запрашивать свойство len каждого объекта и выполнять назначение.В этом случае я бы хотел, чтобы свойство str1.str заканчивалось значением "wxy", усекающим "wxyz" до 3 символов (str1.len).Я пытался реализовать это с программным элементом «оператор», но он не позволяет мне запрашивать исходные и целевые объекты.Ключевой элемент этой функциональности - ее реализация в классе.Я не хочу, чтобы в моем главном классе был какой-либо другой синтаксис, кроме;

str1 = str2

Полагаю, в самых простых терминах я хотел бы создать еще один атомарный тип, например int, float или string.

В случае числа;

public class fixNum
{
    public int len;
    public string val;

    public fixLen(int val, int len)
    {
       this.val= val;
       this.len = len;
    }
}

Тогда в моем основном классе;

fixNum num1 as new fixNum(0, 2)
fixnum num2 as new fixNum(999, 3)
num1 = num2 + 1

Так что num1 будет иметь значение 99.

1 Ответ

0 голосов
/ 12 октября 2018

Единственное, о чем я могу думать, это:

определить метод в вашем классе:

public void SetValue(fixLen f)
{
    str = f.str.Substring(0, len);
}

И использовать его str1.SetValue(str2);.

...