C # අතර const
සහ වෙනස readonly
කුමක්ද?
ඔබ එකකට වඩා එකක් භාවිතා කරන්නේ කවදාද?
C # අතර const
සහ වෙනස readonly
කුමක්ද?
ඔබ එකකට වඩා එකක් භාවිතා කරන්නේ කවදාද?
Answers:
හි පැහැදිලි වෙනස හැරුණු විට
const
වීඑස් readonly
අගයන් සඳහා අර්ථ දැක්වීමේ අවස්ථාවේදී අගය ප්රකාශ කිරීම ගතිකව ගණනය කළ හැකි නමුත් ඉදිකිරීම්කරු පිටවීමට පෙර එය පැවරිය යුතුය .. ඉන්පසු එය ශීත කළ පසු.static
. ClassName.ConstantName
ඒවාට ප්රවේශ වීම සඳහා ඔබ අංකනයක් භාවිතා කරයි .සියුම් වෙනසක් ඇත. අර්ථ දක්වා ඇති පන්තියක් සලකා බලන්න AssemblyA
.
public class Const_V_Readonly
{
public const int I_CONST_VALUE = 2;
public readonly int I_RO_VALUE;
public Const_V_Readonly()
{
I_RO_VALUE = 3;
}
}
AssemblyB
AssemblyA
මෙම අගයන් කේතයෙන් යොමු කරයි. මෙය සම්පාදනය කළ විට,
const
අගය සම්බන්ධයෙන් ගත් කල , එය සොයා ගැනීම ප්රතිස්ථාපනය කිරීමක් වැනිය, අගය 2 AssemblyB
'අයිඑල්' තුළට පුළුස්සනු ලැබේ . මෙයින් අදහස් කරන්නේ හෙට නම් මම I_CONST_VALUE
අනාගතයේදී 20 දක්වා යාවත්කාලීන කරමි . AssemblyB
මම එය නැවත සකස් කරන තුරු තවමත් 2 ක් ඇත .readonly
අගය සම්බන්ධයෙන් ගත් කල , එය ref
මතක ස්ථානයකට සමාන වේ. වටිනාකම AssemblyB
අයිඑල් වෙත පුළුස්සනු නොලැබේ . මෙයින් අදහස් කරන්නේ මතක පිහිටීම යාවත්කාලීන කරන්නේ නම්, AssemblyB
නැවත සකස් කිරීමකින් තොරව නව අගය ලබා ගන්නා බවයි. එබැවින් I_RO_VALUE
30 දක්වා යාවත්කාලීන කරන්නේ නම් , ඔබට අවශ්ය වන්නේ ගොඩ නැගීමයි AssemblyA
. සියලුම සේවාදායකයින් නැවත සම්පාදනය කිරීම අවශ්ය නොවේ.එබැවින් නියතයේ අගය වෙනස් නොවන බව ඔබට විශ්වාස නම් a භාවිතා කරන්න const
.
public const int CM_IN_A_METER = 100;
නමුත් ඔබට වෙනස් විය හැකි නියතයක් තිබේ නම් (උදා: නිරවද්යතාව) .. හෝ සැකයක් ඇති විට a භාවිතා කරන්න readonly
.
public readonly float PI = 3.14;
යාවත්කාලීන කිරීම: අකූට මුලින්ම මෙය පෙන්වා දුන් සඳහනක් ලබා ගත යුතුය. එසේම මම මෙය ඉගෙන ගත් තැනට ප්ලග් කිරීමට අවශ්යයි .. C ලදායී සී # - බිල් වැග්නර්
static
ස්ථානය ඉතා වැදගත් හා ප්රයෝජනවත් ලක්ෂ්යයක් බව පෙනේ -consts are implicitly static
readonly
ඉදිකිරීම්කරුට පිටතින් විචල්යයන් වෙනස් කළ හැකිය (පරාවර්තනය). ඉදිකිරීම්කරුට පිටතින් var වෙනස් කිරීමට ඔබට බාධා කිරීමට උත්සාහ කරන්නේ සම්පාදකයා පමණි.
readonly
ඉදිකිරීම්කරු අවසන් වූ පසු පරාවර්තනය හරහා වුවද මිනි- මී විචල්යයන් වෙනස් කිරීමට ඉඩ නොදේ. මෙය ක්රියාත්මක නොකිරීමට ධාවන කාලය සිදු වේ. මෙම ධාවන ඔබ වෙනස් නැති බව බලාත්මක කිරීම සඳහා නොවේ සිදු string.Empty
කිරීමට "Hello, world!"
, නමුත් මම තවමත් මේ කරයි බව කියා නැහැ string.Empty
modifiable, හෝ කේතය බව උපකල්පනය නොකළ යුතුය string.Empty
සැමවිටම ශුන්ය-දිග, සංගීත වනු ඇත.
කොන්ස්ටස් සහිත ගොචා එකක් තිබේ! ඔබ වෙනත් එකලස් කිරීමකින් නියතයක් සඳහන් කරන්නේ නම්, එහි වටිනාකම ඇමතුම් එකලස් කිරීම සඳහා සම්පාදනය කෙරේ. ඔබ යොමු කරන ලද එකලස් කිරීමේදී නියතය යාවත්කාලීන කරන විට එය ඇමතුම් එකලස් කිරීමේදී වෙනස් නොවේ!
එකතු කිරීම සඳහා, විමර්ශන වර්ග සඳහා ReadOnly පමණක් යොමු කිරීම කියවීමට පමණක් වටිනාකම් නොවේ. උදාහරණයක් වශයෙන්:
public class Const_V_Readonly
{
public const int I_CONST_VALUE = 2;
public readonly char[] I_RO_VALUE = new Char[]{'a', 'b', 'c'};
public UpdateReadonly()
{
I_RO_VALUE[0] = 'V'; //perfectly legal and will update the value
I_RO_VALUE = new char[]{'V'}; //will cause compiler error
}
}
string
නියතයක් ලෙස භාවිතා කළ හැකි වෙනත් යොමු වර්ගයක් තිබේද?
const
නූල් හැර වෙනත් විමර්ශන වර්ග තිබිය හැකිය , නමුත් නියතයට තිබිය හැක්කේ වටිනාකම පමණි null
.
මෙය එය පැහැදිලි කරයි . සාරාංශය: ප්රකාශන වේලාවේදී const ආරම්භ කළ යුතු අතර, කියවන්නාට පමණක් ඉදිකිරීම්කරු මත ආරම්භ කළ හැකිය (එමඟින් භාවිතා කළ ඉදිකිරීම්කරු මත පදනම්ව වෙනස් අගයක් ඇත).
සංස්කරණය කරන්න: සියුම් වෙනස සඳහා ඉහත ගිෂුගේ ගොචා බලන්න
කියවීමට පමණක් ඇති කුඩා ගොචා ඇත. ඉදිකිරීම්කරු (ය) තුළ කියවිය හැකි ක්ෂේත්රයක් කිහිප වතාවක් සැකසිය හැකිය. විවිධ දම්වැල් සහිත ඉදිකිරීම්කරුවන් දෙදෙනෙකුගේ අගය සකසා තිබුණද එයට තවමත් අවසර ඇත.
public class Sample {
private readonly string ro;
public Sample() {
ro = "set";
}
public Sample(string value) : this() {
ro = value; // this works even though it was set in the no-arg ctor
}
}
නියත සාමාජිකයෙකු සම්පාදනය කරන වේලාවේදී අර්ථ දක්වා ඇති අතර ධාවන වේලාවේදී එය වෙනස් කළ නොහැක. const
මූල පද භාවිතා කරමින් නියතයන් ක්ෂේත්රයක් ලෙස ප්රකාශයට පත් කරන අතර ඒවා ප්රකාශයට පත් කළ පරිදි ආරම්භ කළ යුතුය.
public class MyClass
{
public const double PI1 = 3.14159;
}
ඒ readonly
සාමාජික එය වෙනස් නොවන අගය නියෝජනය කරන නිරන්තර වගේ. වෙනස වන්නේ readonly
සාමාජිකයෙකුට ධාවන වේලාවේදී, ඉදිකිරීම්කරුවෙකු තුළ ආරම්භ කළ හැකි අතරම ඔවුන් ප්රකාශයට පත් කළ පරිදි ආරම්භ කිරීමට හැකිවීමයි.
public class MyClass1
{
public readonly double PI2 = 3.14159;
//or
public readonly double PI3;
public MyClass2()
{
PI3 = 3.14159;
}
}
const
static
(ඒවා ව්යංගයෙන් ස්ථිතික වේ)කියවීමට පමණි
static const int i = 0;
const
ක්රමවේදයන් තුළ ප්රකාශ කළ නොහැක්කේ මන්දැයි ඔබට පැහැදිලි කළ හැකිද ?
නියතයක් යනු සම්පාදක කාල නියතයක් වන අතර කියවීමේදී පමණක් ධාවන වේලාවේදී අගය ගණනය කිරීමට ඉඩ සලසයි. එබැවින්, 'කොන්ස්' සැමවිටම නියත වන නමුත් 'කියවීමට පමණක්' කියවනු ලැබේ.
සී # කණ්ඩායමේ එරික් ලිපර්ට් හට විවිධ වර්ගයේ වෙනස් කළ නොහැකි බව පිළිබඳ වැඩි විස්තර ඇත
සංස්කරණය අනුවාදය ආරක්ෂිත නොවන ආකාරය හෝ යොමු වර්ග සඳහා අදාළ වන්නේ කෙසේද යන්න නිරූපණය කරන තවත් සබැඳියක් මෙන්න .
සාරාංශය :
කියවීමට පමණි : ධාවන වේලාවේදී Ctor හරහා අගය වෙනස් කළ හැකිය. නමුත් සාමාජික ක්රියාකාරිත්වය හරහා නොවේ
නියත : ස්ථිතික අපවිත්ර වීමෙන්. අගය ඕනෑම තැනක සිට වෙනස් කළ නොහැක (Ctor, Function, Runime etc etc no-where)
තවත් ගොචා: කියවීමට පමණක් ඇති අගයන් පරාවර්තනය හරහා “වංක” කේතයෙන් වෙනස් කළ හැකිය.
var fi = this.GetType()
.BaseType
.GetField("_someField",
BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(this, 1);
පරාවර්තනය භාවිතා කර මට C # හි පුද්ගලික කියවීමට පමණක් උරුම වූ ක්ෂේත්රයක් වෙනස් කළ හැකිද?
const
සෑම වස්තුවකටම අගයක් සමාන බව මම විශ්වාස කරමි (සහ එය වචනානුසාරයෙන් ප්රකාශනයකින් ආරම්භ කළ යුතුය), නමුත් readonly
එක් එක් ක්ෂණිකකරණය සඳහා වෙනස් විය හැකිය ...
ඒවා දෙකම නියත ය, නමුත් සංයුක්ත වේලාවක දී ද නියතයක් ලබා ගත හැකිය. මෙයින් අදහස් කරන්නේ වෙනසෙහි එක් අංගයක් නම්, ඔබට ඉදිකිරීම්කරුවන්ට ආරෝපණය කිරීම සඳහා නියත විචල්යයන් ආදානය ලෙස භාවිතා කළ හැකි නමුත් කියවීමට පමණක් විචල්ය නොවන බවයි.
උදාහරණයක්:
public static class Text {
public const string ConstDescription = "This can be used.";
public readonly static string ReadonlyDescription = "Cannot be used.";
}
public class Foo
{
[Description(Text.ConstDescription)]
public int BarThatBuilds {
{ get; set; }
}
[Description(Text.ReadOnlyDescription)]
public int BarThatDoesNotBuild {
{ get; set; }
}
}
අපගේ කාර්යාලයේ සිටින කණ්ඩායම් සාමාජිකයෙකු විසින් නියත, ස්ථිතික සහ කියවීමට පමණක් භාවිතා කළ යුතු ආකාරය පිළිබඳ පහත සඳහන් මග පෙන්වීම් ලබා දී ඇත:
එක් අවසාන සටහනක්: සංයුක්ත ක්ෂේත්රයක් ස්ථිතික නමුත් ප්රතිලෝම සත්ය නොවේ.
භාවිතා කළ යුතු විට const
හෝreadonly
const
readonly
App.config
, නමුත් එය ආරම්භ කළ පසු එය වෙනස් කළ නොහැකවිචල්ය ලෙස සලකුණු කරන ලද විචල්යයන් තදින් ටයිප් කළ # මැක්රෝස් වලට වඩා මඳක් වැඩි ය, සම්පාදනය කරන වේලාවේදී විචල්ය විචල්ය යොමුව පේළිගත අගයන් සමඟ ප්රතිස්ථාපනය වේ. මෙහි ප්රති consequ ලයක් ලෙස මේ ආකාරයෙන් භාවිතා කළ හැක්කේ ඇතැම් සාදන ලද ප්රාථමික අගය වර්ග පමණි. කියවීමට පමණක් සලකුණු කරන ලද විචල්යයන්, ඉදිකිරීම්කරුවෙකු තුළ, ධාවන වේලාවේදී සැකසිය හැකි අතර, කියවීමේ-පමණක්-නෙස් ක්රියාත්මක වන වේලාවේදී ද ක්රියාත්මක වේ. මේ හා සම්බන්ධ සුළු කාර්ය සාධන පිරිවැයක් ඇති නමුත් එයින් අදහස් කරන්නේ ඔබට ඕනෑම වර්ගයක් (විමර්ශන වර්ග පවා) සමඟ කියවීමට පමණක් භාවිතා කළ හැකි බවයි.
එසේම, විචල්ය විචල්යයන් සහජයෙන්ම ස්ථිතික වන අතර, කියවීමට පමණක් විචල්යයන් අවශ්ය නම් නිදර්ශන විශේෂිත විය හැකිය.
තවත් ගොචා .
කොන්ස් ඇත්ත වශයෙන්ම ක්රියාත්මක වන්නේ මූලික දත්ත වර්ග සමඟ පමණක් බැවින්, ඔබට පන්තියක් සමඟ වැඩ කිරීමට අවශ්ය නම්, ඔබට කියවීමට පමණක් බල කිරීමට සිදුවනු ඇත. කෙසේ වෙතත්, උගුලෙන් පරිස්සම් වන්න! ReadOnly යන්නෙන් අදහස් කරන්නේ ඔබට වෙනත් වස්තුවක් සමඟ වස්තුව ප්රතිස්ථාපනය කළ නොහැකි බවයි (ඔබට එය වෙනත් වස්තුවකට යොමු කළ නොහැක). නමුත් වස්තුවට යොමු දැක්වීමක් ඇති ඕනෑම ක්රියාවලියක් තුළ ඇති අගයන් වෙනස් කිරීමට නිදහස ඇත වස්තුව ඇති !
එබැවින් කියවීමට පමණක් පරිශීලකයාට දේවල් වෙනස් කළ නොහැකි යැයි සිතීම ව්යාකූල නොකරන්න. පංතියක අභ්යන්තර අගයන් වෙනස් වීම වැළැක්වීම සඳහා සී # හි සරල වාක්ය ඛණ්ඩයක් නොමැත (මා දන්නා පරිදි).
C # .Net හි const සහ readonly ක්ෂේත්ර අතර සැලකිය යුතු වෙනසක් ඇත
const යනු පෙරනිමියෙන් ස්ථිතික වන අතර එය නියත අගයකින් ආරම්භ කළ යුතුය, එය පසුව වෙනස් කළ නොහැක. ඉදිකිරීම්කරුවන් තුළ ද අගය වෙනස් කිරීමට අවසර නැත. එය සියලු දත්ත සමුදායන් සමඟ භාවිතා කළ නොහැක. හිටපු දිනය ටයිම් සඳහා. එය ඩේටයිම් දත්ත සමුදාය සමඟ භාවිතා කළ නොහැක.
public const DateTime dt = DateTime.Today; //throws compilation error
public const string Name = string.Empty; //throws compilation error
public readonly string Name = string.Empty; //No error, legal
කියවීමට පමණක් ස්ථිතික යැයි ප්රකාශ කළ හැකි නමුත් අවශ්ය නොවේ. ප්රකාශ කරන අවස්ථාවේ ආරම්භ කිරීම අවශ්ය නොවේ. එහි අගය ඉදිකිරීම්කරු භාවිතා කර පැවරිය හැකිය. එබැවින්, පන්ති සාමාජිකයෙකු ලෙස භාවිතා කරන විට එය වාසියක් ලබා දෙයි. වෙනස් ක්ෂණික අවස්ථා දෙකකට කියවීමට පමණක් ඇති ක්ෂේත්රයේ වෙනස් අගයක් තිබිය හැකිය. හිටපු සඳහා -
class A
{
public readonly int Id;
public A(int i)
{
Id = i;
}
}
පහත දැක්වෙන පරිදි ක්ෂණික නිශ්චිත අගයන් සමඟ කියවීමට පමණක් ක්ෂේත්රය ආරම්භ කළ හැකිය:
A objOne = new A(5);
A objTwo = new A(10);
මෙහිදී, objOne හට කියවිය හැකි ක්ෂේත්රයේ අගය 5 ක් වන අතර objTwo ට 10 ක් ඇත. එය const භාවිතා කළ නොහැක.
නියතයක් පාරිභෝගිකයාට වචනාර්ථමය අගයක් ලෙස සම්පාදනය කෙරෙන අතර ස්ථිතික නූල් අර්ථ දක්වා ඇති අගය වෙත යොමු වේ.
අභ්යාසයක් ලෙස, බාහිර පුස්තකාලයක් නිර්මාණය කර එය කොන්සෝල යෙදුමක පරිභෝජනය කරන්න, ඉන්පසු පුස්තකාලයේ ඇති අගයන් වෙනස් කර එය නැවත සකස් කරන්න (පාරිභෝගික වැඩසටහන නැවත සකස් නොකර), ඩීඑල්එල් ඩිරෙක්ටරියට දමා EXE අතින් ක්රියාත්මක කරන්න, ඔබ සොයා ගත යුතුය නියත නූල වෙනස් නොවන බව.
නියතයි
නියත ක්ෂේත්රය නිර්වචනය කළ විට එය ලබා දිය යුතුය. ඉන්පසු සම්පාදකයා එකලස් කිරීමේ පාර-දත්තවල නියතයේ අගය ඉතිරි කරයි. මෙයින් අදහස් කරන්නේ නියතයක් නිර්වචනය කළ හැක්කේ බූලියන්, චාර්, බයිට් වැනි ප්රාථමික වර්ගයට පමණි. නියතයන් සැමවිටම ස්ථිතික සාමාජිකයන් ලෙස සලකනු ලැබේ, උදාහරණ සාමාජිකයන් නොවේ.
කියවීමට පමණි
කියවිය හැකි ක්ෂේත්ර නිරාකරණය කළ හැක්කේ ධාවන වේලාවේදී පමණි. ඒ කියන්නේ ක්ෂේත්රය ප්රකාශයට පත් කරන වර්ගය සඳහා ඉදිකිරීම්කරු භාවිතා කරමින් අපට අගයක් සඳහා අගයක් අර්ථ දැක්විය හැකිය. සත්යාපනය සිදු කරනු ලබන්නේ සම්පාදකයා විසිනි, කියවිය හැකි ක්ෂේත්ර ඉදිකිරීම්කරු හැර වෙනත් ක්රමයකට ලියා නැත.
මේ ගැන වැඩි විස්තර මෙම ලිපියෙන් විස්තර කෙරේ
කොන්ස්ට් සහ කියවීමට පමණක් සමාන නමුත් ඒවා හරියටම සමාන නොවේ. සංයුක්ත ක්ෂේත්රයක් යනු සම්පාදක කාල නියතයකි, එයින් අදහස් වන්නේ එම අගය සම්පාදක වේලාවේදී ගණනය කළ හැකි බවයි. කියවීමට පමණක් ඇති ක්ෂේත්රයක් මඟින් වර්ගය තැනීමේදී යම් කේතයක් ක්රියාත්මක කළ යුතු අතිරේක අවස්ථා සක්රීය කරයි. ඉදිකිරීමෙන් පසු, කියවිය හැකි ක්ෂේත්රයක් වෙනස් කළ නොහැක.
උදාහරණයක් ලෙස, සාමාජිකයන් අර්ථ දැක්වීම සඳහා const සාමාජිකයන් භාවිතා කළ හැකිය:
struct Test
{
public const double Pi = 3.14;
public const int Zero = 0;
}
3.14 සහ 0 වැනි අගයන් සම්පාදක කාල නියතයන් බැවින්. කෙසේ වෙතත්, ඔබ වර්ගයක් නිර්වචනය කර එහි පූර්ව-ෆැබ් අවස්ථා කිහිපයක් සැපයීමට අවශ්ය අවස්ථාව සලකා බලන්න. උදා: ඔබට වර්ණ පංතියක් නිර්වචනය කර කළු, සුදු වැනි පොදු වර්ණ සඳහා “නියතයන්” සැපයීමට අවශ්ය විය හැකිය. දකුණු පැත්තේ සම්පාදක කාල නියතයන් නොවන බැවින් නියත සාමාජිකයන් සමඟ මෙය කළ නොහැක. සාමාන්ය ස්ථිතික සාමාජිකයන් සමඟ කෙනෙකුට මෙය කළ හැකිය:
public class Color
{
public static Color Black = new Color(0, 0, 0);
public static Color White = new Color(255, 255, 255);
public static Color Red = new Color(255, 0, 0);
public static Color Green = new Color(0, 255, 0);
public static Color Blue = new Color(0, 0, 255);
private byte red, green, blue;
public Color(byte r, byte g, byte b) {
red = r;
green = g;
blue = b;
}
}
නමුත් පසුව කළු සහ සුදු අගයන් හුවමාරු කර ගැනීමෙන් වර්ණ සේවාදායකයකු සමඟ නොගැලපීමට කිසිවක් නැත. මෙය වර්ණ පන්තියේ අනෙකුත් සේවාදායකයින්ට ව්යාකූලත්වයක් ඇති කරන බව අමුතුවෙන් කිව යුතු නැත. "කියවීමට පමණක්" විශේෂාංගය මෙම තත්වය ආමන්ත්රණය කරයි. ප්රකාශනවල කියවීමට පමණක් ඇති මූලික පදය සරලව හඳුන්වා දීමෙන්, සේවාදායක කේතය අවුල් වීම වලක්වන අතරම නම්යශීලී ආරම්භය අපි ආරක්ෂා කරමු.
public class Color
{
public static readonly Color Black = new Color(0, 0, 0);
public static readonly Color White = new Color(255, 255, 255);
public static readonly Color Red = new Color(255, 0, 0);
public static readonly Color Green = new Color(0, 255, 0);
public static readonly Color Blue = new Color(0, 0, 255);
private byte red, green, blue;
public Color(byte r, byte g, byte b) {
red = r;
green = g;
blue = b;
}
}
සංයුක්ත සාමාජිකයන් සැමවිටම ස්ථිතික වන අතර කියවිය හැකි සාමාජිකයෙකු සාමාන්ය ක්ෂේත්රයක් මෙන් ස්ථිතික හෝ නොවිය හැකිය.
මෙම අරමුණු දෙක සඳහා තනි මූල පදයක් භාවිතා කළ හැකි නමුත් මෙය අනුවාදකරණ ගැටළු හෝ කාර්ය සාධන ගැටළු වලට මග පාදයි. අපි මේ සඳහා තනි මූල පදයක් භාවිතා කළ බව මොහොතකට උපකල්පනය කරන්න, සහ සංවර්ධකයෙකු මෙසේ ලිවීය:
public class A
{
public static const C = 0;
}
වෙනත් සංවර්ධකයෙක් ඒ මත යැපෙන කේතයක් ලිවීය:
public class B
{
static void Main() {
Console.WriteLine(A.C);
}
}
දැන්, ජනනය කරන කේතයට ප්රත්යාවර්ත ධාරා සංයුක්ත කාල නියතය යන කාරණය මත රඳා පැවතිය හැකිද? එනම්, AC භාවිතය හුදෙක් 0 අගය මගින් ප්රතිස්ථාපනය කළ හැකිද? ඔබ මේ සඳහා "ඔව්" යැයි පැවසුවහොත්, එයින් අදහස් වන්නේ A හි සංවර්ධකයාට AC ආරම්භ කරන ආකාරය වෙනස් කළ නොහැකි බවයි - මෙය අවසරයකින් තොරව A හි සංවර්ධකයාගේ දෑත් බැඳ තබයි. ඔබ මෙම ප්රශ්නයට "එපා" යැයි පැවසුවහොත් වැදගත් ප්රශස්තිකරණයක් මග හැරේ. සමහර විට A හි කතුවරයා ධනාත්මක වන්නේ AC සෑම විටම ශුන්ය වනු ඇති බවයි. සංයුක්ත හා කියවීමට පමණක් භාවිතා කිරීම මඟින් A හි සංවර්ධකයාට අභිප්රාය නියම කිරීමට ඉඩ ලබා දේ. මෙය වඩා හොඳ අනුවාද හැසිරීමක් සහ වඩා හොඳ කාර්ය සාධනයක් ඇති කරයි.
වෙනස වන්නේ ස්ථිතික කියවිය හැකි ක්ෂේත්රයක වටිනාකම ක්රියාත්මක වන වේලාවට සකසා තිබීමයි, එබැවින් වැඩසටහනේ විවිධ ක්රියාත්මක කිරීම් සඳහා එය වෙනස් අගයක් ලබා ගත හැකිය. කෙසේ වෙතත්, සංයුක්ත ක්ෂේත්රයක අගය සම්පාදක කාල නියතයකට සකසා ඇත.
මතක තබා ගන්න: විමර්ශන වර්ග සඳහා, අවස්ථා දෙකේදීම (ස්ථිතික හා උදාහරණ), කියවීමට පමණක් වෙනස් කිරීම මඟින් ක්ෂේත්රයට නව යොමු කිරීමක් පමණක් වළක්වයි. එය විශේෂයෙන් යොමු දැක්වීමෙන් පෙන්වා ඇති වස්තුව වෙනස් කළ නොහැක.
වැඩි විස්තර සඳහා කරුණාකර මෙම මාතෘකාව පිළිබඳ සී # නිතර අසනු ලබන ප්රශ්න බලන්න: http://blogs.msdn.com/csharpfaq/archive/2004/12/03/274791.aspx
සංයුක්ත වේලාවේදී නියත විචල්යයන් ප්රකාශයට පත් කර ආරම්භ කරනු ලැබේ. වාට්ටුවලින් පසු වටිනාකම වෙනස් කළ නොහැක. කියවීමට-පමණක් විචල්යයන් ආරම්භ කරනු ලබන්නේ පන්තියේ ස්ථිතික ඉදිකිරීම්කරුගෙන් පමණි. කියවීම පමණක් භාවිතා කරනුයේ අපට ක්රියාත්මක වන වේලාවේදී අගය පැවරීමට අවශ්ය වූ විට පමණි.
මිනිසුන් ඉහත කී දෙයට එකතු කළ යුතු එක් දෙයක්. ඔබට කියවිය හැකි වටිනාකමක් ඇති එකලස් කිරීමක් තිබේ නම් (උදා: කියවීමට පමණක් මැක්ස්ෆූකවුන්ට් = 4;), එම එකලස් කිරීමේ නව අනුවාදයක් වෙනත් අගයකින් නැව්ගත කිරීමෙන් ඇමතුම් එකලස් කිරීමේ වටිනාකම ඔබට වෙනස් කළ හැකිය (උදා: කියවීමට පමණක් මැක්ස්ෆූකවුන්ට් = 5;).
නමුත් නියතයක් සමඟ, ඇමතුම්කරු සම්පාදනය කරන විට එය ඇමතුම්කරුගේ කේතයට නැමෙනු ඇත.
ඔබ මෙම C # ප්රවීණතා මට්ටමට ළඟා වී ඇත්නම්, ඔබ බිල් වැග්නර්ගේ පොත වන C ලදායී C #: 50 ඔබේ C # වැඩි දියුණු කිරීමට නිශ්චිත ක්රම # මෙම ප්රශ්නයට සවිස්තරාත්මකව පිළිතුරු සපයන (සහ තවත් කරුණු 49 ක්) සූදානම්.