সি # বৈশিষ্ট্য: ব্যক্তিগত ক্ষেত্র ব্যতীত কাস্টম সেট সম্পত্তি কীভাবে ব্যবহার করবেন?


96

আমি এটা করতে চাই:

public Name
{
    get;
    set
    {
        dosomething();
        ??? = value
    }
}

স্বতঃ উত্পাদিত ব্যক্তিগত ক্ষেত্রটি ব্যবহার করা কি সম্ভব?
বা এটি কি এটি এইভাবে প্রয়োগ করা প্রয়োজন:

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        dosomething();
        name = value
    }
}

4
এই এসও প্রশ্নে এটি সম্পর্কে প্রচুর আলোচনা রয়েছে: স্ট্যাকওভারফ্লো
ডেভিড হল

উত্তর:


104

একবার আপনি গেটর বা সেটার যে কোনও ক্ষেত্রে কাস্টম করতে চান আপনি আর অটো বৈশিষ্ট্য ব্যবহার করতে পারবেন না।


39

আপনি এই জাতীয় কিছু চেষ্টা করতে পারেন:

public string Name { get; private set; }
public void SetName(string value)
{
    DoSomething();
    this.Name = value;
}

6
+1 আমার মনে এই উত্তর গৃহীত উত্তরটিকে তিরস্কার করে। এটি অটো বৈশিষ্ট্য ব্যবহার করছে। এটি স্পষ্টতই বেসরকারীকে সেটার সেট করে। এটি একটি ভাল জিনিস কারণ এটি শেষ ব্যবহারকারী বা বিকাশকারীকে জানায় যে সেটার পদ্ধতির পিছনে সম্ভবত আরও কিছু চলছে।
ooXei1sh

এটি এবং একেবারে সেট না করার মধ্যে পার্থক্য কী?
সিধিন এস টমাস

4
@ সিধিনস্টোমাস কোনও সরবরাহ না private setকরায় সম্পত্তিটিকে তার শ্রেণীর সদস্যরা সেট করা থেকে বিরত রাখতে পারে; এটি কঠোরভাবে কেবল পঠনযোগ্য হবে। আপনি কেবল এটির নির্মাণকারীর মধ্যে ডেটা সেট করতে সক্ষম হবেন।
বন্ডলিন

15

এইটা সম্ভব না. হয় স্বয়ংক্রিয়ভাবে প্রয়োগ করা বৈশিষ্ট্য বা কাস্টম কোড।


11

সি # 7 হিসাবে, আপনি সম্পত্তির getএবং setঅ্যাক্সেসরদের জন্য অভিব্যক্তির বডি সংজ্ঞা ব্যবহার করতে পারেন ।

আরও এখানে দেখুন

private string _name;

public string Name
{
    get => _name;
    set
    {
        DoSomething();
        _name = value;
    }
}

4
এখনও একটি ব্যক্তিগত ক্ষেত্র ব্যবহার করছি। ওপিকে সত্যিই সহায়তা করে না।
টিএসমিথ

এটি কাজ করার সময় এটি @ টিএসএমথির মত, ওপি যা চায় তা নয়।
এম। রুইজ

7

এটি আপনার দৃশ্যের সম্পূর্ণরূপে বাস্তবায়নের প্রয়োজন implement উভয়ই getএবং setহয় স্বয়ংক্রিয়ভাবে প্রয়োগ করা বা সম্পূর্ণ একসাথে বাস্তবায়িত করা উচিত, দুজনের সংমিশ্রণ নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.