2019 рдореЗрдВ C # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢реАрд░реНрд╖ 10 рдХреАрдбрд╝реЗ рдорд┐рд▓реЗ

рдЪрд┐рддреНрд░ 1

рдХреАрдбрд╝реЗ рдХреЗ рд╕рднреА рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд╛рдп! рдирдпрд╛ рд╕рд╛рд▓ рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рд╡рд░реНрддрдорд╛рди рд╡рд░реНрд╖ рдХрд╛ рдЬрд╛рдпрдЬрд╛ рд▓реЗрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ 2019 рдореЗрдВ рдЦреБрд▓реА рд╕реА # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд╛рдИ рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╢реАрд░реНрд╖ рд╕реВрдЪреА рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рддреИрдпрд╛рд░ рд╣реИрдВ? рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред

рджрд╕рд╡рд╛рдВ рд╕реНрдерд╛рди "рдореВрд░реНрдЦ рд╣рд░ рдХреЛрдИ"


V3066 30 AdjustCellBorderStyle тАЩрд╡рд┐рдзрд┐: F isFirstDisplayedRowтАЩ рдФрд░ DFirstDisplayedColumn тАЩрдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдХреНрд░рдоред DataGridViewComboBoxCell.cs 1934

protected override void OnMouseMove(DataGridViewCellMouseEventArgs e) { .... dgvabsEffective = AdjustCellBorderStyle( DataGridView.AdvancedCellBorderStyle, dgvabsPlaceholder, singleVerticalBorderAdded, singleHorizontalBorderAdded, isFirstDisplayedRow, // <= isFirstDisplayedColumn); // <= .... } 

рд▓реЗрдЦ " WinForms: рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рд╣реЛрдореНрд╕ " рд╕реЗ рддреНрд░реБрдЯрд┐ ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╡рд┐рдзрд┐ рдХреЗ рджреЛ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдПрдбрдЬрд╕реНрдЯрдореЗрдВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦреЗрдВ:

 public virtual DataGridViewAdvancedBorderStyle AdjustCellBorderStyle( DataGridViewAdvancedBorderStyledataGridViewAdvancedBorderStyleInput, DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { .... } 

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╣реА рд╣реИред рдЕрдХреНрд╕рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдРрд╕рд╛ рд╣реА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреВрд▓ рдкреНрд░рдХрд╛рд░ рдЪрд░ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдХреЛрдИ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рдХреЗ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ: рдХреЛрдИ "рд╕реНрд╡реИрдк" рдпрд╛ "рд░рд┐рд╡рд░реНрд╕" рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рд▓реЛрдЧ "рд▓рд╛рдЗрди / рдХреЙрд▓рдо" рдХреЛрд▓рд╛рдЬреЗрд╢рди рдСрд░реНрдбрд░ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред

рдиреМрд╡рд╛рдВ рд╕реНрдерд╛рди "рдЕрдирдВрдд рдХрд╛рд▓ рдХреЗ рдХрд░реАрдм"


V3110 'TryValidateModel' рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред рдЙрдкрд╕рд░реНрдЧрдореВрд▓реЗ рдЙрдкрдкрдж.рдЪрдХреНрд╖реБ 48

 public bool TryValidateModel(object model, string prefix) { return TryValidateModel(model, Prefix(prefix)); } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдСрд░реНрдЪрд░реНрдб рд╕реАрдПрдордПрд╕ рдХреЗ рдХреЛрдб рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ "ред рдПрдХ рдЧрд▓рддреА рдереА рдЬреЛ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдиреАред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреА рдЧрдИ рдереА, рдЙрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, TryValidateModel рд╡рд┐рдзрд┐ рдХреЗ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ :

 public bool TryValidateModel(object model) { return _updateModel.TryValidateModel(model); } 

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдорд╛рдорд▓рд╛ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗ:

 public bool TryValidateModel(object model, string prefix) { return _updateModel.TryValidateModel(model, Prefix(prefix)); } 

рдХреЛрдб рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ _updateModel IUpdateModel рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рднреА IUpdateModel рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдЖрдард╡рд╛рдВ рд╕реНрдерд╛рди "рдпрджрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЦреЛрдЬреЗрдВ"


V3091 рдЕрдиреБрднрд╡рдЬрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИ: "рдкреНрд░рдмрдВрдзрди рд╕рдореВрд╣ рдЖрдИрдбреАред" 'рдИрдж' рд╢рдмреНрдж рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ.рдХреИрдВрд╕ 36

 public class HelpMessages { public const string SubscriptionId = "Subscription Id of the subscription associated with the management"; public const string GroupId = "Management Group Id"; // <= public const string Recurse = "Recursively list the children of the management group"; public const string ParentId = "Parent Id of the management group"; public const string GroupName = "Management Group Id"; // <= public const string DisplayName = "Display Name of the management group"; public const string Expand = "Expand the output to list the children of the management group"; public const string Force = "Force the action and skip confirmations"; public const string InputObject = "Input Object from the Get call"; public const string ParentObject = "Parent Object"; } 

" Azure PowerShell: рдЕрдзрд┐рдХрддрд░ рд╣рд╛рдирд┐рдХрд╛рд░рдХ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╕рдореВрд╣рдирд╛рдо рдХреЛ рдПрдХ рдЧрд▓рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрдн рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рд╕рдВрджреЗрд╣ рдХрд┐рдпрд╛ред "рдкреНрд░рдмрдВрдзрди рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо" рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдЕрднреА рднреА рд╕рдВрджрд┐рдЧреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреБрд░реНрд▓рдн рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╕рд╛рддрд╡реАрдВ рдЬрдЧрд╣ "рдмрд╕ рдирдЬрд░рдЕрдВрджрд╛рдЬ"


V3078 'рд╕реЙрд░реНрдЯрдмрд╛рдп' рдкрджреНрдзрддрд┐ рдХреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореВрд▓ рдЫрдБрдЯрд╛рдИ рдХреНрд░рдо рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдореВрд▓ рдЫрдВрдЯрд╛рдИ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рддрдм' рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред GridModel.Selection.cs 107

 internal partial class GridModel { private void BuildCellSelectionRegions(....) { .... this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .OrderBy(c => c.RowItemInfo.LayoutInfo.Line)); } } 

рд▓реЗрдЦ рдХреА рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд▓рд┐рдП рддреЗрд▓рд░рд┐рдХ рдпреВрдЖрдИ рдХреА рдЬрд╛рдБрдЪ ред" рдкрд╣рд▓реЗ рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдСрд░реНрдбрд░рдмрд╛рдп рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдкрд┐рдЫрд▓реА рдЫрдВрдЯрдиреА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .ThenBy(c => c.RowItemInfo.LayoutInfo.Line)); 

рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЕрд╕рд╛рд╡рдзрд╛рдиреА рдпрд╛ рдЕрдЬреНрдЮрд╛рдирддрд╛ рд╕реЗ рд╣реЛрддреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдпрд╣рд╛рдВ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред

рдЫрдареЗ рд╕реНрдерд╛рди рдкрд░ "рдХреЛрдб рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ", рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛


V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред MaskedTextProvider.cs 1529

 public bool Remove(out int testPosition, out MaskedTextResultHint resultHint) { .... if (lastAssignedPos == INVALID_INDEX) { .... return true; // nothing to remove. } .... return true; } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ .NET рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ "ред рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд▓реМрдЯреЗрдЧреАред рд╣рд╛рдВ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реИред рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж рд╣реИ:

рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЕрдВрддрд┐рдо рд╡рд░реНрдг рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред (рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд░реНрдг рдирд┐рдХрд╛рд▓реЗрдВ)ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдкрд░рдо рдореЗрдВ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдСрдкрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред MaskedTextResultHint out param рдСрдкрд░реЗрд╢рди рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рд╕рдлрд▓рддрд╛ рдкрд░ рд╕рдЪ рд▓реМрдЯрд╛рддрд╛ рд╣реИ , рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд ред

рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдХреМрди рдкрдврд╝рддрд╛ рд╣реИ? рдлрд┐рд░ рднреА, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдпрд╛ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рдиред рдЦреИрд░, рд▓реЗрдЦрдХ рд╡реИрд░рд┐рдПрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬрдм рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдерд╛ рд╡реИрд╕рд╛ рд╣реА рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред

рдкрд╛рдВрдЪрд╡рд╛рдВ рд╕реНрдерд╛рди "рдореБрдЭреЗ рд╕реВрдЪрдХрд╛рдВрдХ, рдЕрдм!"


V3102 рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ 'seq' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡ рддрдХ рд╕рдВрджрд┐рдЧреНрдз рдкрд╣реБрдВрдЪред XmlQueryRuntime.cs 738

 public bool MatchesXmlType(IList<XPathItem> seq, ....) { .... for (int i = 0; i < seq.Count; i++) { if (!CreateXmlType(seq[0]).IsSubtypeOf(....)) return false; } return true; } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ .NET рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ "ред рдЬрдм рд▓реВрдк рдХреЗ рд▓рд┐рдП seq рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдЧрд▓рддреА рд╕реЗ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ ( i рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдбреЗрдХреНрд╕ 0) рдкрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЪреМрдерд╛ рд╕реНрдерд╛рди "рдмрд╕ рдПрдХ рдбреЙрд▓рд░ рдХрдо"


V3138 рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдИред SSPIHandleCache.cs 42

 internal static void CacheCredential(SafeFreeCredentials newHandle) { try { .... } catch (Exception e) { if (!ExceptionCheck.IsFatal(e)) { NetEventSource.Fail(null, "Attempted to throw: {e}"); } } } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ .NET рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ "ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕: {рдИ}" рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред $ рд╡рд░реНрдг рдЫреВрдЯрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдИ рдЕрдкрд╡рд╛рдж рдХрд╛ рд▓рд╛рдЗрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдирддреАрдЬрддрди, рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ "рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред"

рддреАрд╕рд░рд╛ рд╕реНрдерд╛рди "рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ"


V3008 [CWE-563] 'this.linker.s3.region' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 116, 114. AWSSDK.DynamoDBv2.Net45 S3Link.cs 116

 public string Region { get { .... } set { if (String.IsNullOrEmpty(value)) { this.linker.s3.region = "us-east-1"; } this.linker.s3.region = value; } } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " .NET рдХреЗ рд▓рд┐рдП рдЕрдореЗрдЬрд╝рди рд╡реЗрдм рд╕реЗрд╡рд╛ рдПрд╕рдбреАрдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ "ред рдЗрдл рдмреНрд▓реЙрдХ рдХреЗ рдмреЙрдбреА рдореЗрдВ рд░рд┐рдЯрд░реНрди рдЫреВрдЯ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрд╕ .linker.s3.region рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рдорд╛рди рдорд┐рд▓реЗрдЧрд╛ , рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдФрд░ рдирд▓ рд╢рд╛рдорд┐рд▓ рд╣реИред

рджреВрд╕рд░реА рдЬрдЧрд╣ "рд╕рд╣реА рдкреЛрд╢рд╛рдХ!"


'LOCALE_USER_DEFAULT' рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп V3070 Uninitialized рдЪрд░ 'LANG_USER_DEFAULT' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред NativeMethods.cs 890

 internal static class NativeMethods { .... public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); .... } 

рд▓реЗрдЦ " WinForms: рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рд╣реЛрдореНрд╕ " рд╕реЗ рддреНрд░реБрдЯрд┐ ред рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдо рдЙрд▓рдЭрди рдореЗрдВ рд╣реИред LOCALE_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд┐рд▓рд╣рд╛рд▓ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ 0. рд╣реИред рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, WinForms рдХреЛрдб рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреБрдЫ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп, рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 internal static class NativeMethods { public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(0x00, 0x01); public static int MAKELANGID(int primary, int sub) { return ((((ushort)(sub)) << 10) | (ushort)(primary)); } public static int MAKELCID(int lgid) { return MAKELCID(lgid, 0x0); } public static int MAKELCID(int lgid, int sort) { return ((0xFFFF & lgid) | (((0x000f) & sort) << 16)); } } class Program { static void Main() { System.Console.WriteLine(NativeMethods.LOCALE_USER_DEFAULT); } } 

рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдВрдЧреЗ: 0. рдЕрдм LOCALE_USER_DEFAULT рдФрд░ LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо: 1024ред

рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ "рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдлрд┐рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ"


рдкрд╣рд▓реА рдЬрдЧрд╣ рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рдЕрд╕рд╛рдзрд╛рд░рдг рдФрд░ рдордиреЛрд░рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдмреАрд╕ рд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдХреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛ред рддрднреА рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА рд╕рд░реНрдЧреЗрдИ рд╡рд╛рд╕рд┐рд▓рд┐рд╡ рдХреЗ рд▓реЗрдЦ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рд╣реИред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдХрд╛рдо рдХреЛ рд╕реАрдзреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдХреИрд╕реЗ? рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐ ... рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ " рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА ред рдпрд╣рд╛рдВ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдЖрдк рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рд╡рд┐рд╡рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред :) рдореИрдВ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдЦ рдЫреЛрдЯрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрдХрд╛рдпрд╛ рдереАрдВ рдФрд░ рд▓реЗрдЦ рдердХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛ред рд╕рд┐рд░реНрдл рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ, рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЯреЙрдо, рдбрд┐рдХ рдпрд╛ рд╣реИрд░реА рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрдЧ рдвреВрдВрдврдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рд╣реЛрдиреЗ рджреЗрдВ, рдФрд░ рдЖрддреНрдо-рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдордп - рдЕрдзрд┐рдХ! :)

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдВрдд рддрдХ рдкрдврд╝рд╛? рдирдП рд╕реНрддрд░ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдореЗрд░реА рдмрдзрд╛рдИ! рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рд╣рдорд╛рд░реЗ upcomimg рд▓реЗрдЦреЛрдВ рдХреЛ рдпрд╛рдж рди рдХрд░реЗрдВ - 2019 рдореЗрдВ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдмрдЧред

рдЪрд┐рддреНрд░ 2

Source: https://habr.com/ru/post/hi481174/


All Articles