this과 중복되지 않습니다.기능이없는 특정 길이의 문자열을 직접 입력하십시오.
문자열을 최대 길이로 만들고 싶습니다. 이 길이를 넘지 않아야합니다. 20 자 길이라고합니다. 제공된 문자열이 20보다 큰 경우 첫 번째 20 개의 문자열을 가져 와서 나머지는 버립니다.
The이 질문에 대한 대답은 기능이있는 문자열을 어떻게 처리하는지 보여 주지만 기능없이 직접 수행하려고합니다. 문자열이 기록 될 때마다 문자열 길이 검사가 수행되기를 원합니다. 다음은
는은하고 싶지 내가 할 것입니다 :string myString = "my long string";
myString = capString(myString, 20); //<-- Don't want to call a function each time
string capString(string strToCap, int strLen)
{
...
}
나는 속성을 이러한 목표를 달성 할 수 있었다 :
const int Max_Length = 20;
private string _userName;
public string userName
{
get { return _userName; }
set
{
_userName = string.IsNullOrEmpty(value) ? "" : value.Substring(0, Max_Length);
}
}
가 그럼 난 쉽게 호출 whout 사용할 수 있습니다 그것을 감싸는 함수 :
userName = "Programmer";
이 문제는 모든 string
에 대해 여러 변수가 정의되어 있어야합니다. 이 경우 _userName
및 userName
(속성) 변수가 있습니다.
을 수정할 때마다 함수를 호출하지 않고도 동시에 각 문자열에 대해 여러 변수를 만들지 않고 똑똑한 방식으로 수행 할 수 있습니까?
아래 답변뿐만 아니라 PostSharp와 같은 AOP 프레임 워크를 사용하여 속성 설정자를 가로채는 속성을 정의 할 수 있습니다. PostSharp에는 무료/특급 버전이 있습니다. –
제안 해 주셔서 감사합니다. Unity3D와 Mono를 사용하고 있으며 바이너리 크기를 늘리거나 모바일 장치에서 문제를 일으킬 수있는 타사 라이브러리 사용을 막으려 고합니다. – Programmer
작동 여부는 알 수 없지만 Unity는 ['StringLengthAttribute'] (https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute (v = vs.110))를 존중합니다.aspx) .NET에 내장 된? –