ස්ටයිල්කොප් ප්රලේඛනයට අනුව:
SA1200: DirectDirectivesMustBePlacedWithinNamespace භාවිතා කිරීම
හේතුව AC # විධානය භාවිතා කිරීම නාම අවකාශයක මූලද්රව්යයෙන් පිටත තබා ඇත.
රීති විස්තරය ගොනුවේ කිසිදු නාම අවකාශ මූලද්රව්යයක් නොමැති නම්, නාම අවකාශයක මූලද්රව්යයෙන් පිටත භාවිතා කරන විධානයක් හෝ අන්වර්ථ නාමයක් භාවිතා කරන විට මෙම රීතිය උල්ලං violation නය වේ.
උදාහරණයක් ලෙස, පහත දැක්වෙන කේතය මෙම රීතිය උල්ලං lations නය කිරීම් දෙකකට හේතු වේ.
using System;
using Guid = System.Guid;
namespace Microsoft.Sample
{
public class Program
{
}
}
කෙසේ වෙතත්, පහත දැක්වෙන කේතය මෙම රීතිය උල්ලං in නය කිරීමක් සිදු නොකරනු ඇත:
namespace Microsoft.Sample
{
using System;
using Guid = System.Guid;
public class Program
{
}
}
මෙම කේතය කිසිදු සම්පාදක දෝෂයකින් තොරව පිරිසිදු ලෙස සම්පාදනය කරනු ඇත. කෙසේ වෙතත්, මාර්ගෝපදේශ වර්ගයේ කුමන අනුවාදය වෙන් කරන්නේද යන්න පැහැදිලි නැත. පහත දැක්වෙන පරිදි, භාවිතා කිරීමේ විධානය නාම අවකාශය තුළට ගෙන යන්නේ නම්, සම්පාදක දෝෂයක් සිදුවනු ඇත:
namespace Microsoft.Sample
{
using Guid = System.Guid;
public class Guid
{
public Guid(string s)
{
}
}
public class Program
{
public static void Main(string[] args)
{
Guid g = new Guid("hello");
}
}
}
පහත දැක්වෙන සම්පාදක දෝෂය මත කේතය අසමත් වේ Guid g = new Guid("hello");
CS0576: නාම අවකාශය 'Microsoft.Sample' හි අන්වර්ථ නාමයක් වන 'Guid' සමඟ ගැටෙන අර්ථ දැක්වීමක් අඩංගු වේ.
මෙම කේතය System.Guid වර්ගයට Guid ලෙස අන්වර්ථයක් නිර්මාණය කරයි, එසේම ගැලපෙන ඉදිකිරීම් අතුරුමුහුණතක් සහිත Guid නමින් තමන්ගේම වර්ගයක් නිර්මාණය කරයි. පසුව, කේතය මඟින් ගයිඩ් වර්ගය පිළිබඳ උදාහරණයක් නිර්මාණය කරයි. මෙම අවස්ථාව නිර්මාණය කිරීම සඳහා, සම්පාදකයා විසින් මාර්ගෝපදේශයේ වෙනස් අර්ථකථන දෙක අතර තෝරා ගත යුතුය. භාවිතා කිරීමේ-අන්වර්ථ විධානය නාම අවකාශයේ මූලද්රව්යයෙන් පිටත තැබූ විට, සම්පාදකයා විසින් දේශීය නාම අවකාශය තුළ නිර්වචනය කර ඇති මාර්ගෝපදේශයේ දේශීය අර්ථ දැක්වීම තෝරා ගනු ඇති අතර නාම අවකාශයෙන් පිටත අර්ථ දක්වා ඇති භාවිතා කිරීමේ අන්වර්ථ නියෝගය සම්පූර්ණයෙන්ම නොසලකා හරිනු ඇත. අවාසනාවට, කේතය කියවීමේදී මෙය පැහැදිලිව පෙනෙන්නට නැත.
කෙසේ වෙතත්, භාවිතා කිරීමේ-අන්වර්ථ විධානය නාම අවකාශය තුළ ස්ථානගත කර ඇති විට, සම්පාදකයාට එකම නාම අවකාශය තුළ අර්ථ දක්වා ඇති වෙනස්, ගැටුම් සහිත මාර්ගෝපදේශ වර්ග දෙකක් තෝරා ගත යුතුය. මෙම වර්ග දෙකම ගැලපෙන ඉදිකිරීම්කරුවෙකු සපයයි. සම්පාදකයාට තීරණයක් ගැනීමට නොහැකි නිසා එය සම්පාදක දෝෂය සලකුණු කරයි.
නාම අවකාශයෙන් පිටත භාවිතා කිරීම-අන්වර්ථ නියෝගය තැබීම නරක පුරුද්දකි, මන්දයත් මෙවැනි තත්වයන් තුළ ව්යාකූලත්වයට හේතු විය හැකි අතර, ඇත්ත වශයෙන්ම කුමන වර්ගයේ අනුවාදයක් භාවිතා කරන්නේද යන්න පැහැදිලි නැත. මෙය දෝෂ හඳුනා ගැනීමට අපහසු විය හැකි දෝෂයකට තුඩු දිය හැකිය.
නාම අවකාශයේ මූලද්රව්යය තුළ අන්වර්ථ නාම භාවිතා කිරීමෙන් මෙය දෝෂ ප්රභවයක් ලෙස ඉවත් කරයි.
- බහු නාම අවකාශයන්
එක් ගොනුවක් තුළ බහු නාම මූලද්රව්ය තැබීම සාමාන්යයෙන් නරක අදහසකි, නමුත් මෙය සිදු කළ විට සහ භාවිතා කරන විට, ගෝලීයව ගොනුවේ ඉහළින් නොව, සෑම නාම අවකාශයකම භාවිතා කරන සියලු විධානයන් තැබීම හොඳ අදහසකි. මෙය නාම අවකාශයන් තදින් විෂය පථයට යොමු කරනු ඇති අතර, ඉහත විස්තර කර ඇති ආකාරයේ හැසිරීම් වලක්වා ගැනීමට ද උපකාරී වේ.
නාම අවකාශයෙන් පිටත තබා ඇති විධානයන් භාවිතා කරමින් කේතය ලියා ඇති විට, මෙම විධානයන් නාම අවකාශය තුළට ගෙන යන විට සැලකිලිමත් විය යුතු අතර, මෙය කේතයේ අර්ථ නිරූපණය වෙනස් නොවන බවට වග බලා ගත යුතුය. ඉහත විස්තර කර ඇති පරිදි, නාම අවකාශයේ මූලද්රව්යය තුළ අන්වර්ථ නාම භාවිතා කිරීම සම්පාදකයාට නාම අවකාශයෙන් පිටත විධානයන් තැබූ විට සිදු නොවන ආකාරයෙන් ගැටුම් වර්ග අතර තෝරා ගැනීමට ඉඩ දෙයි.
උල්ලං lations නයන් නිවැරදි කරන්නේ කෙසේද මෙම රීතිය උල්ලං violation නය කිරීමක් නිවැරදි කිරීම සඳහා, නාම අවකාශයේ මූලද්රව්යය තුළ ඇති සියලුම විධානයන් සහ අන්වර්ථ නාමයන් භාවිතා කරන්න.